package String;
/**
 * 描述
 * 以字符串的形式读入两个数字，编写一个函数计算它们的和，以字符串形式返回。
 *
 * 数据范围：s.length,t.length≤100000，字符串仅由'0'~‘9’构成
 * 要求：时间复杂度 O(n)O(n)
 * 示例1
 * 输入：
 * "1","99"
 * 返回值：
 * "100"
 * 说明：
 * 1+99=100
 * 示例2
 * 输入：
 * "114514",""
 * 返回值：
 * "114514"
 *
 * */
class BM86 {

    public static String solve (String s, String t) {
        // write code here
        if(s==null || s.length()==0){
            return t;
        }
        if(t==null || t.length()==0){
            return s;
        }
        int lens = s.length();
        int lent = t.length();
        int i = lens-1;
        int j = lent-1;
        int flag = 0; //进位值
        StringBuilder sb = new StringBuilder();
        while(i>=0 || j>=0){
            //各自从后往前取数字，如果已经遍历完了则取0
            char cs = i>=0 ? s.charAt(i) : '0' ;
            char ct = j>=0 ? t.charAt(j) : '0' ;
            int num = cs-'0' + ct-'0' + flag;
            flag = num/10;
            num = num % 10;
            sb.append(num+"");
            i--;
            j--;
        }
        if(flag==1){
            sb.append("1");
        }
        return sb.reverse().toString();
    }

    public static void main(String[] args) {
        System.out.println(solve("1", "99"));
    }
}
